package rt.wxf_bo.sim;

import org.jodconverter.core.DocumentConverter;
import org.jodconverter.core.office.OfficeException;
import org.jodconverter.local.LocalConverter;
import org.jodconverter.local.office.LocalOfficeManager;

import java.io.File;
import java.io.IOException;

public class FileConverterExample {

    public static void main(String[] args) {
        // 输入文件路径（Word 或 PPT 文件）
        String inputFilePath = "F:\\s\\临沂市用电量平台\\用户培训\\县区报警处置操作手册.pptx"; // 修改为你的文件路径
        // 输出文件路径（PDF 文件）
        String outputFilePath = "D:\\pdf\\convert\\file.pdf"; // 修改为你的输出路径

        // 调用转换方法
        try {
            convertToPdf(inputFilePath, outputFilePath);
            System.out.println("文件转换成功！PDF 已保存到: " + outputFilePath);
        } catch (OfficeException | IOException e) {
            System.err.println("文件转换失败: " + e.getMessage());
        }
    }

    /**
     * 将文件转换为 PDF
     *
     * @param inputFilePath  输入文件路径
     * @param outputFilePath 输出文件路径
     * @throws OfficeException 如果 LibreOffice 转换失败
     * @throws IOException     如果文件读写失败
     */
    public static void convertToPdf(String inputFilePath, String outputFilePath) throws OfficeException, IOException {
        // 创建输入文件和输出文件对象
        File inputFile = new File(inputFilePath);
        File outputFile = new File(outputFilePath);

        // 检查输入文件是否存在
        if (!inputFile.exists()) {
            throw new IOException("输入文件不存在: " + inputFilePath);
        }

        // 配置 LibreOffice 安装路径
        LocalOfficeManager officeManager = LocalOfficeManager.builder()
                .officeHome("C:/Program Files/LibreOffice") // 修改为你的 LibreOffice 安装路径
                .install() // 安装 OfficeManager
                .build();

        try {
            // 启动 OfficeManager
            officeManager.start();

            // 使用 LibreOffice 进行转换
            DocumentConverter converter = LocalConverter.make(officeManager);
            converter.convert(inputFile).to(outputFile).execute();
        } finally {
            // 停止 OfficeManager
            officeManager.stop();
        }
    }
}